#pragma once

#include <string>
#include "vosmfacade.h"
#include "includelibs.h"
#include "IDetector.h"
#include "IExtractor.h"
#include "IRecognizer.h"
#include "MasterConfigHelper.h"
#include "GuiHelper.h"

class FutureEye
{
private:
//	ISubSystem* subsys;
	static IDetector *mDetector;
	static IExtractor *mExtractor;
	static IRecognizer *mRecognizer;
	static GuiHelper *mGuiHelper;
	static bool inited;
	static FutureEye *me;

	MasterConfigHelper configger;

	void dealImage( const string& filename );
	void dealVideo( const string& filename );


	FutureEye(void);
public:
	static FutureEye *GetInstance();
	static IDetector *GetDetector();
	static IExtractor *GetExtractor();
	static IRecognizer *GetRecognizer();
	static GuiHelper *GetGuiHelper();

	~FutureEye(void);

	bool init( string config = "config.xml" );
	void startup(void);
	void train(void);

	void setVideo(string filename);
};
